hallo iedereen. Ik heb onderstaande php met een formulier. Deze werkt prima, dankzij hulp van enkelen van jullie. Maar zit met 2 dingen waar ik niet aan uit kom!

1. Wanneer de ingevoerde tekst bijv. is: tekst tekst tekst (dus met meerdere spaties of returns erin werkt het script niet meer. wel wordt leegruimte in het begin en einde weggelaten, maar hoe kan ik ervoor zorgen dat er slechts 1 lege ruimte is tussen elk woord en/of returns eruit worden gefilterd?
2. Ik wil de tekst uit het bestand ook in het begin via preg_match toekennen aan een variabel, zodat deze in het formulier wordt getoond. echter ik kom er niet aan uit hoe de synthax moet zijn van de preg-match functie. heb al van alles geprobeerd, maar het lukt mij niet. Bedoeling is dat de tekst net als bij de preg_replace achter id="check1". eruit wordt gehaald.

[code]
<?php

$myfile= "test.html"; // or .php
$string = file_get_contents($myfile);


if( isset($_GET['submit']) )
{
$replace = trim( $_REQUEST['mytext'] );
$content = preg_replace('#(<p[^>]+id="check1"[^>]*>).*?(</p>)#', '$1'.$replace.'$2', $string);

file_put_contents($myfile, $content);
echo $content;
echo $mytext;
}
?>


<form action="" method="get">

<textarea rows = "30" cols = "150" name = "mytext">
<?php echo htmlspecialchars($replace); ?>
</textarea>

<input type="submit" name="submit" value="send"></input>
</form>



/code]
Zet even je code tussen code-tags. :-)
hoe arien. hoe bedoel je precies? ik heb toch <?php en ?> gebruikt?
We hebben [code] UBB-tags voor codeblokken, en zelfs een prachtige knop daarvoor:

Zo blijft het forum beter leesbaar.
ah ja zeker. inmiddels aangepast. bedankt voor de tip. had ik over het hoofd gezien
Voor puntje 2, volgens mij bedoel je de werking van [php]preg_match_all[/php], zodat je de delen van je reguliere expressie in een array kan opvangen.
ja precies. Ik heb al naar oplossingen gezocht, maar krijg de syntax niet werkend. Ik wil de tekst dus de tekst na id="check1" eruit filteren.
Je kan toch met preg_replace dat doen? Of wil je het opsplitsen?
preg_replace vervang ik inderdaad de tekst. Maar als ik de .php pagina afsluit en weer opnieuw laad moet de tekst die ik daarvoor heb ingevoerd weer in het formulier verschijnen. Dat gaat toch niet zonder preg_match?

[size=xsmall]Toevoeging op 11/01/2022 15:21:07:[/size]

Ik heb daar wel eerder een oplossing via dit forum van ontvangen maar dat was dan met de ondertaande variant waarbij je tussen <vervangp> en </vervangp> alles wordt vervangen.. werkt ook, maar zocht een manier om dit op de manier zoals boven beschreven te doen.

<p id="check9" class="check1 check 2 check 3"><vervangp>oude p tag tekst</vervangp></p>

[size=xsmall]Toevoeging op 11/01/2022 15:29:13:[/size]

Voor het verwijderen van overbodige tussenruimtes heb ik deze gevonden. nu even getest en werkt wel. Is dat de juiste gebruikte methode?


<?php
$input = "deze test hier dffff";
$output = preg_replace('!\s+!', ' ', $input);
echo $output;
?>

Paul Weiss op 11/01/2022 15:11:10

preg_replace vervang ik inderdaad de tekst. Maar als ik de .php pagina afsluit en weer opnieuw laad moet de tekst die ik daarvoor heb ingevoerd weer in het formulier verschijnen. Dat gaat toch niet zonder preg_match?

Dat staat los van preg_match. Als je data wilt bewaren bij het sluiten van de browser, dan moet je dat in een cookie of database parkeren.


[size=xsmall]Toevoeging op 11/01/2022 15:47:50:[/size]

Je wilt alle overtollige spaties, new-lines en tabs terugbrengen naar 1 spatie?

<?php
$string = " Bla oke ";
$output = trim(preg_replace('/[\t\n\r\s]+/', ' ', $string));
echo $output;
?>

Edit: En nu met juiste variabele :+
hoi arien. ik wil even werken zonder database. zoals jullie al aangaven komt daar nog wel wat bij kijken. Ik heb dat wel voor elkaar, maar zou dit dus via de preg_match functie willen bereiken. Was bij mijn eerder topic ook een oplossing voor zie:

https://www.phphulp.nl/php/forum/topic/hoe-tekst-html-bestand-importeren-in-formulier-en/104221/1/

Maar die had dus een andere synthax en ik komt er niet aan uit hoe deze moet zijn zoals in het voorbeeld van dit topic.

[size=xsmall]Toevoeging op 11/01/2022 15:55:54:[/size]

Ik heb alle overtollige spaties er al uit gehaald. nu nog de preg_match functie uitzoeken om de tekst bij laden van het bestand eruit te filteren.

Reageren