Avatar billede kodak Mester
30. oktober 2011 - 15:12 Der er 28 kommentarer og
1 løsning

næsten str_replace

Med
$a = 'Hej med dig søde';
$b = 'dig';
$c = 'mig';
echo str_replace($b , $c , $a);
// udskriver 'Hej med mig'

Jeg vil gerne kunne udskrive
hvis $a starter med 'hej' og slutter med 'søde'
skal den udskrive 'med dig'

hvordan gøres dette?
Avatar billede olebole Juniormester
30. oktober 2011 - 15:37 #1
<ole>

Det må du vist forklare lidt tydeligere  =)

/mvh
</bole>
Avatar billede olebole Juniormester
30. oktober 2011 - 15:46 #2
Hmmm ... er det noget i denne stil, du mener?


<?php
function findStuff($first, $last, $haystack) {
    preg_match('/^'.$first.' (.+) '.$last.'$/i', $haystack, $a);
    return $a[1];
}

$result = findStuff('hej', 'søde', 'Hej med dig søde');
print $result;
?>

Avatar billede kodak Mester
30. oktober 2011 - 15:49 #3
hvis der kommer en sætning fra min database
eksempelvis:
"<p style="text-align: justify;"><strong>Exp eller Eksperten test</strong></p>"

Vil jeg gerne have at den udskriver:
hvis start = "<p style="text-align: justify;"><strong>"
og hvis slut = " test</strong></p>"

Output:
"<p style="text-align: justify;"><strong>Exp eller Eksperten test</strong></p>
<a href="http://www.google.dk/?q=Exp eller Eksperten">Google</a>"
Avatar billede olebole Juniormester
30. oktober 2011 - 15:54 #4
Så bliver det en del mere komplekset. Så skal du først escape dine strenge for tegn, der kolliderer med RegExp
Avatar billede kodak Mester
30. oktober 2011 - 16:06 #5
der kan være mange flere tegn
det er derfor jeg mener at den skal virke lidt som 'str_replace'
Avatar billede olebole Juniormester
30. oktober 2011 - 16:12 #6
Måske er det skikrere at undgå RegExp:


function findStuff($first, $last, $haystack, $whitespace=true) {
    $lenFirst = strlen($first);
    $lenCont = strlen($haystack)-($lenFirst+strlen($last));
    $ret = substr($haystack, $lenFirst, $lenCont);
    return ($whitespace===false ? trim($ret) : $ret);
}


Funktionen tager tre obligatoriske argumenter. Du kan undgå at skrive mellemrummet før 'test' i $last, hvis du kalder med et fjerde argument: false
Avatar billede olebole Juniormester
30. oktober 2011 - 16:13 #7
"der kan være mange flere tegn
det er derfor jeg mener at den skal virke lidt som 'str_replace'"
- Det forstår jeg ikke?
Avatar billede kodak Mester
30. oktober 2011 - 16:24 #8
den skal vise et rss med 10 nyheder i midten af hver nyhed er der en linje der er som den <p style="text-align: justify;"><strong>Two and Half Men Test</strong></p>

og for hver gang script'et ser <p style="text-align: justify;"><strong> efterfulgt af </strong></p>
ved script'et at det skal lave et link, ud fra det imellem.
Avatar billede arne_v Ekspert
30. oktober 2011 - 16:25 #9
regexp er sproget til pattern matching.

Men hvad laver den HTML markup nede i databasen?
Avatar billede olebole Juniormester
30. oktober 2011 - 16:28 #10
"regexp er sproget til pattern matching." - helt enig, men det bliver let noget bøvl, hvis der kan være alle mulige uspecificerede specialtegn i de to 'border-sætninger'  =)
Avatar billede kodak Mester
30. oktober 2011 - 16:46 #11
så det kan ikke gøres?
Avatar billede olebole Juniormester
30. oktober 2011 - 16:53 #12
Hvad kan ikke gøres? Har du testet #6? Lever den ikke op til dine krav?

Derudover har Arne fuldstændig ret: Databaser er til data - ikke markup. Når man hælder HTML ned i en DB, sætter man vand over til slemme øretæver. Det kan kun resultere i problemer
Avatar billede kodak Mester
30. oktober 2011 - 16:56 #13
sikke da en måde at sige det på.
Avatar billede kodak Mester
30. oktober 2011 - 17:08 #14
Hvis du mener:
function findStuff($first, $last, $haystack, $whitespace=true) {
                            $lenFirst = strlen($first);
                            $lenCont = strlen($haystack)-($lenFirst+strlen($last));
                            $ret = substr($haystack, $lenFirst, $lenCont);
                            return ($whitespace===false ? trim($ret) : $ret);
                        }
                        $description = findStuff('<div style="text-align: justify;"><strong>', '</strong></div>', $text7);
                       
                        echo utf8_decode($description);

Virker den ikke den udskriver hele siden
Avatar billede olebole Juniormester
30. oktober 2011 - 17:13 #15
"sikke da en måde at sige det på." - hvad mener du?

"den udskriver hele siden" - Har du hele HTML-sider liggende i databasen?
Avatar billede kodak Mester
30. oktober 2011 - 17:23 #16
$text7 = RSS_Display("http://www.dr.dk/nyheder/service/feeds/allenyheder", 10));

function findStuff($first, $last, $haystack, $whitespace=true) {
                            $lenFirst = strlen($first);
                            $lenCont = strlen($haystack)-($lenFirst+strlen($last));
                            $ret = substr($haystack, $lenFirst, $lenCont);
                            return ($whitespace===false ? trim($ret) : $ret);
                        }
                        $description = findStuff('<div style="text-align: justify;"><strong>', '</strong></div>', $text7);
                       
                        echo utf8_decode($description);
Avatar billede olebole Juniormester
30. oktober 2011 - 17:50 #17
?
Avatar billede olebole Juniormester
30. oktober 2011 - 17:55 #18
Du linker til en RSS-fil (læs: XML-fil). Den indeholder ikke HTML
Avatar billede kodak Mester
30. oktober 2011 - 18:08 #19
jeg har aldrig snakket om HTML.
Avatar billede olebole Juniormester
30. oktober 2011 - 18:13 #20
Ehhhh ... nå ...?!!???!! Da jeg beder dig forklare dig lidt tydeligere, giver du eksempel, der udelukkende handler om at filtere mellem HTML tags. Hvad sker der?
Avatar billede olebole Juniormester
30. oktober 2011 - 18:15 #21
- og som du kan se på Arnes kommentar, har du også overbevist ham om, at du skal filtrere HTML.

Hvis du forventer at få hjælp, må du tage din egen tråd alvorligt og tydeligt forklare, hvad det er, du efterspørger. Ellers er det rent spild af tid!
Avatar billede arne_v Ekspert
30. oktober 2011 - 18:15 #22
<p style="text-align: justify;"><strong>Two and Half Men Test</strong></p>

mindrer ret meget om HTML !
Avatar billede kodak Mester
30. oktober 2011 - 19:01 #23
Avatar billede olebole Juniormester
30. oktober 2011 - 19:30 #24
Jeg kan ikke gennemskue, om du ikke vil eller bare ikke evner at samarbejde om løsningen. Indtil du har fået løst det problem, må jeg anbefale, at du finder en anden legeplads
Avatar billede kodak Mester
30. oktober 2011 - 19:35 #25
Jeg kan ikke forstå hvad der er galt.
jeg har aldrig gået op i rss har altid bare troet at det var en måde at udlæse XML på.

men http://www.film-nyt.dk/nyheder?format=feed&type=rss er den jeg har læst det ud fra.
Avatar billede olebole Juniormester
30. oktober 2011 - 20:15 #26
Således belært kan jeg hermed konstatere, at det måske ikke er viljen, du ikke besidder
Avatar billede kodak Mester
04. november 2012 - 21:25 #27
Undskyld den længe response.
Så prøver jeg igen

Bør virke på følgendene måde:

$haystack = 'http://www.eksperten.dk/spm/950255';

echo resultat('<title>', '</title>', $haystack);
echo'<br>';
echo resultat('<meta name="description" content="', '" />', $haystack);

//Output wil bee
Eksperten - Spørgsmål - næsten str_replace
Skandinaviens st&oslash;rste IT-Community: Sp&oslash;rg og f&aring; svar p&aring; alt indenfor IT


Og mere bør den ikke udskrive end det.
Avatar billede kodak Mester
04. november 2012 - 22:46 #28
Fandt en løsning:

function file_get_contents_curl($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}

$html = file_get_contents_curl("http://www.eksperten.dk/spm/950255");
$doc = new DOMDocument();
@$doc->loadHTML($html);

$nodes = $doc->getElementsByTagName('title');
$nodes2 = $doc->getElementsByTagName('meta');

$title = $nodes->item(0)->nodeValue;

if($nodes2->getAttribute('name') == 'description') {
    $description = $nodes2->getAttribute('content');
}

echo "Title: $title". '<br/>';
echo "Description: $description";
Avatar billede kodak Mester
11. juni 2013 - 21:46 #29
okay kan du hjælpe mig med denne?

hvis den ser således ud:

<table cellpadding="0" cellspacing="0">
    <tr>
        <td style="width: 92px">
            <label style="font-weight: bold">LWnr.:</label>
        </td>
        <td>
            <label>0489007404</label> //-- som $lwnr --//
        </td>
    </tr>
    <tr>
        <td style="width: 92px">
            <label style="font-weight: bold">EAN nr.:</label>
        </td>
        <td>
            <label>4010091668408</label> //-- som $ean_nr --//
        </td>
    </tr>
    <tr>
        <td style="width: 92px">
            <label style="font-weight: bold">UNSPSC:</label>
        </td>
        <td>
            <label>39121500</label> //-- som $unspsc --//
        </td>
    </tr>
    <tr>
        <td style="width: 92px">
            <label style="font-weight: bold">Eget Varenr.:</label>
        </td>
        <td>
            <label>-</label> //-- som $my_nr --//
        </td>
    </tr>
    <tr>
        <td style="width: 92px">
            <label style="font-weight: bold">Leverandør:</label>
        </td>
        <td>
            <label>Siemens</label> //-- som $company --//
        </td>
    </tr>
    <tr>
        <td style="width: 92px">
            <label style="font-weight: bold">Typenr.:</label>
        </td>
        <td>
            <label>6GF3020-1HE40-0XX0</label> //-- som $type_nr --//
        </td>
    </tr>
    <tr>
        <td style="width: 92px">
            <label style="font-weight: bold">Rabatkode:</label>
        </td>
        <td>
            <label>80080420062</label> //-- som $rabatkode --//
        </td>
    </tr>
    <tr>
        <td style="width: 92px">

        </td>
        <td>
            <label></label>
        </td>
    </tr>
</table>


Hvordan udlæser jeg så de nævnet value's
har i et bud på hvordan scriptet kan se ud?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester