string uit string halen.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

M Ypma

M Ypma

21/07/2006 16:32:00
Quote Anchor link
Goedenmiddag allen,
Ik loop tegen een probleempje aan.

Ik wil uit de string "[include=test.htm]" "test.htm" halen. echter staat de 1e string ergens in een htm bestand.

Ik moet dus opzoek naar het patroon [include= ] en daar het bestand uithalen. preg_replace zal de oplossing zijn, ik word alleen niks wijzer van de teken reeks die nodig is om mijn doel te bereiken.
Kan iemand mij opweg helpen?
 
PHP hulp

PHP hulp

09/05/2021 21:35:38
 
Erik Rijk
Moderator

Erik Rijk

21/07/2006 16:38:00
Quote Anchor link
wat wil je nu precies?
je verhaal is niet echt duidelijk.
Kan je het misschien verduidelijken dmv een stuk script.
 
Jasper

jasper

21/07/2006 16:48:00
Quote Anchor link
als ik het goed voor heb, je hebt een text, met UBB codes in, waaronder de code [include=BESTANDSNAAM].
maar nu wil je de die BESTANDSNAAM uit je text halen ? maar wat wil je hier dan met doen ? ik veronderstel dat je die bestandsnaam dan in je text wilt toevoegen ? bv een stuk text ?
 
M Ypma

M Ypma

21/07/2006 16:54:00
Quote Anchor link
jasper wat je zegt klopt helemaal. wat ik met die tekst wil doen maakt opzich niet uit, als ik hem maar in een variabele kan zetten. de bedoelling is zoals de UBB aangeeft om dat bestand ook daadwerkelijk te includen. het is onderdeel van een template parser waarmee ik bezig ben om mezelf OOP aan te leren.
Edit:

dus stel ik heb:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<? [titel]
[
tekst]
[
include=test.htm] ?>


dan wil ik de bestdandsnaam gebruiken om die contents op te halen en ook door me template parser heen te halen en op diezelfde locatie te plaatsten

Gewijzigd op 01/01/1970 01:00:00 door M Ypma
 
- -

- -

21/07/2006 16:54:00
Quote Anchor link
Dit kan je bewerken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
if (isset($_GET['url'])){
    $text = fopen($_GET['url']);
    $includesarray = preg_replace('/\(.*?)[include=(.*?)\](.*?)/si', '$2;', $text);
    $includes = explode(';', $includesarray)
    echo '<ul>' . "\n";
    foreach ($includes as $include){
        echo '<li>' . $include . '</li>' . "\n";
    }

    echo '</ul>' . "\n";
}

echo '<form action="" method="GET">' . "\n";
echo '<p><input type="text" name="url"> Het bestand</p>' . "\n";
echo '<p><input type="submit" value="[include=*] Haal alle waardes op de plaats van het sterretje weg."' . "\n";
echo '</form>';
?>

Ik ga m nu testen.
 
M Ypma

M Ypma

21/07/2006 17:03:00
Quote Anchor link
";" mist op regel 5
en een 2e syntax mist bij je fopen functie.
vervolgens is er iets mis in je preg_replace()

Warning: preg_replace() [function.preg-replace]: Compilation failed: missing terminating ] for character class at offset 27 in f:\wamp\www\OOP\classes\test.php on line 4
Gewijzigd op 01/01/1970 01:00:00 door M Ypma
 
- -

- -

21/07/2006 17:03:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if (isset($_GET['url'])){
    $text = fopen($_GET['url'], 'r');
    $includesarray = preg_replace('/(.*?)\[include=(.*?)\](.*?)/si', '$2;', $text);
    $includes = explode(';', $includesarray);
    echo '<ul>' . "\n";
    foreach ($includes as $include){
        echo '<li>' . $include . '</li>' . "\n";
    }

    echo '</ul>' . "\n";
}

?>

<form action="" method="GET">
<p><input type="text" name="url"> Het bestand</p>
<p><input type="submit" value="[include=*] Haal alle waardes op de plaats van het sterretje weg">.</p>
</form>
 
M Ypma

M Ypma

21/07/2006 17:07:00
Quote Anchor link
het resultaat geeft:
Resource id #3
Edit:
bedankt iig vast voor de hulp allen, ben blij dat ik zo snel geholpen word. Zal zeker doorgaan met anderen helpen hier:)


Edit:
mijn fout! ik zie dat het al werkt. de preg_replace werkt prima! bedankt voor de hulp1
Gewijzigd op 01/01/1970 01:00:00 door M Ypma
 
- -

- -

21/07/2006 17:10:00
Quote Anchor link
kijk (werkt niet 100%)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
if (is_file(@$_GET['url'])){
    $text = readfile($_GET['url']);
?>

<pre>
<?php
    echo nl2br($text) . "\n";
?>

</pre>
<?php
    $includesarray
= preg_replace('/(.*?)\[include=(.*?)\](.*?)/si', '$2;', $text);
    $includes = explode(';', $includesarray);
?>

<ul>
<?php
    foreach ($includes as $include){
        echo '<li>' . $include . '</li>' . "\n";
    }

?>

</ul>
<?php
}
?>

<form action="" method="GET">
<p><input type="text" name="url"> Het bestand</p>
<p><input type="submit" value="[include=*] Haal alle waardes op de plaats van het sterretje weg">.</p>
</form>


zie ook http://phphulp.jonathanhogervorst.com/include.php3?url=test.txt
 
M Ypma

M Ypma

21/07/2006 17:24:00
Quote Anchor link
ik blijf nu zitten met een array welke altijd een key extra overhoud zonder waarde, dit komt door de explode op ";"... geen idee hoe ik die eruit krijg nu...
Edit:
opgelost met substr(), laatste ; weggehaalt
Gewijzigd op 01/01/1970 01:00:00 door M Ypma
 
- -

- -

21/07/2006 18:36:00
Quote Anchor link
mag ik het script eens zien wat je ervan hebt gemaakt?????????????
 
- -

- -

21/07/2006 18:40:00
Quote Anchor link
stuur me ff een pm-etje met het script, please???????
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.