a.u.b. hulp bij 2 problemen.
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.
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)
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
28
29
30
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
28
29
30
<?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]
$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]
Gewijzigd op 11/01/2022 14:00:23 door Paul Weiss
Zet even je code tussen code-tags. :-)
We hebben [code] UBB-tags voor codeblokken, en zelfs een prachtige knop daarvoor:
Zo blijft het forum beter leesbaar.
Zo blijft het forum beter leesbaar.
Gewijzigd op 11/01/2022 13:59:05 door - Ariën -
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 preg_match_all, 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?
Toevoeging op 11/01/2022 15:21:07:
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>
Toevoeging op 11/01/2022 15:29:13:
Voor het verwijderen van overbodige tussenruimtes heb ik deze gevonden. nu even getest en werkt wel. Is dat de juiste gebruikte methode?
Toevoeging op 11/01/2022 15:21:07:
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>
Toevoeging op 11/01/2022 15:29:13:
Voor het verwijderen van overbodige tussenruimtes heb ik deze gevonden. nu even getest en werkt wel. Is dat de juiste gebruikte methode?
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$input = "deze test hier dffff";
$output = preg_replace('!\s+!', ' ', $input);
echo $output;
?>
$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.
Toevoeging op 11/01/2022 15:47:50:
Je wilt alle overtollige spaties, new-lines en tabs terugbrengen naar 1 spatie?
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$string = " Bla oke ";
$output = trim(preg_replace('/[\t\n\r\s]+/', ' ', $string));
echo $output;
?>
$string = " Bla oke ";
$output = trim(preg_replace('/[\t\n\r\s]+/', ' ', $string));
echo $output;
?>
Edit: En nu met juiste variabele :+
Gewijzigd op 11/01/2022 15:54:57 door - Ariën -
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.
Toevoeging op 11/01/2022 15:55:54:
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.
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.
Toevoeging op 11/01/2022 15:55:54:
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.
Tussentijds opslaan kan ook in cookies of met localstorage via JS.
Laat anders eens zien welke situaties er zijn wat er ge-replaced moet/kan worden. Her wordt nu een beetje verwarrend.
Laat anders eens zien welke situaties er zijn wat er ge-replaced moet/kan worden. Her wordt nu een beetje verwarrend.
Gewijzigd op 11/01/2022 15:57:32 door - Ariën -
onderstaand het html bestand waar het omgaat. het gaat dus om het stuk tekst na de id.
<p class="blogbericht" id="check1">hier staat dus de oude tekst die eigenljk aangepast/vervangen zou moeten worden door de tekst vanuit het formulier</p>
Toevoeging op 11/01/2022 15:59:55:
class="blogbericht" is gewoon als voorbeeld toegevoegd, maar daar komen dus andere classes te staan die niet altijd hetzelfde zijn. de id wel. daarmee maak ik de tag uniek, zodat ik weet welke ik moet vervangen.
Toevoeging op 11/01/2022 16:19:39:
Ik heb de onderstaande preg_match gebruik om de tekst eruit te filteren. maar ik krijg dit resultaat: <p class="blogbericht" id="check1">
preg_match( '#(<p[^>]+id="check1"[^>]*>)(.*?)(</p>)#', $string, $matches )
<p class="blogbericht" id="check1">hier staat dus de oude tekst die eigenljk aangepast/vervangen zou moeten worden door de tekst vanuit het formulier</p>
Toevoeging op 11/01/2022 15:59:55:
class="blogbericht" is gewoon als voorbeeld toegevoegd, maar daar komen dus andere classes te staan die niet altijd hetzelfde zijn. de id wel. daarmee maak ik de tag uniek, zodat ik weet welke ik moet vervangen.
Toevoeging op 11/01/2022 16:19:39:
Ik heb de onderstaande preg_match gebruik om de tekst eruit te filteren. maar ik krijg dit resultaat: <p class="blogbericht" id="check1">
preg_match( '#(<p[^>]+id="check1"[^>]*>)(.*?)(</p>)#', $string, $matches )
Gewijzigd op 11/01/2022 15:58:35 door Paul Weiss
Naast de kracht van reguliere expressie kan je ook kijken naar DOMdocument in PHP.
Daarmee kan je ook eenvoudig acties uitvoeren op HTML-tags (of XML).
Daarmee kan je ook eenvoudig acties uitvoeren op HTML-tags (of XML).
met dom ben ik helaas op dit moment nog niet bekend. maar daar zal ik met de tijd ook wel aan toe komen. Heeft iemand wellicht de syntax voor de preg_match?
Gewijzigd op 11/01/2022 16:27:44 door Paul Weiss
ha bedankt heb dit aangepast. alleen de tekst die in het formulier verschijnt is:
<p class="blogbericht" id="check1">nieuwe tekst hier</p>
onderstaande nu het hele script met de preg_match functie
Toevoeging op 11/01/2022 16:49:11:
<p class="blogbericht" id="check1">nieuwe tekst hier</p>
onderstaande nu het hele script met de preg_match functie
Toevoeging op 11/01/2022 16:49:11:
Code (php)
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
$myfile= "test.html"; // or .php
$string = file_get_contents($myfile);
$getcontent = preg_match('#(<p[^>]+id="check1"[^>]*>)(.*?)(<\/p>)#', $string, $matches );
$replace = trim( $matches[0] );
echo $replace;
if( isset($_GET['submit']) )
{
$replace = trim( $_REQUEST['mytext'] );
$output = preg_replace('!\s+!', ' ', $replace);
$replace = $output;
$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>
$myfile= "test.html"; // or .php
$string = file_get_contents($myfile);
$getcontent = preg_match('#(<p[^>]+id="check1"[^>]*>)(.*?)(<\/p>)#', $string, $matches );
$replace = trim( $matches[0] );
echo $replace;
if( isset($_GET['submit']) )
{
$replace = trim( $_REQUEST['mytext'] );
$output = preg_replace('!\s+!', ' ', $replace);
$replace = $output;
$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>
Gewijzigd op 11/01/2022 16:48:00 door Paul Weiss
Make a choice....
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
Array
(
[0] => <p class="blogbericht" id="check1">nieuwe tekst hier</p>
[1] => <p class="blogbericht" id="check1">
[2] => nieuwe tekst hier
[3] => </p>
)
(
[0] => <p class="blogbericht" id="check1">nieuwe tekst hier</p>
[1] => <p class="blogbericht" id="check1">
[2] => nieuwe tekst hier
[3] => </p>
)
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$string='<p class="blogbericht" id="check1">nieuwe tekst hier</p>';
$getcontent = preg_match('#(<p[^>]+id="check1"[^>]*>)(.*?)(<\/p>)#', $string, $matches );
$replace = trim( $matches[0] );
print_r($matches);
?>
$string='<p class="blogbericht" id="check1">nieuwe tekst hier</p>';
$getcontent = preg_match('#(<p[^>]+id="check1"[^>]*>)(.*?)(<\/p>)#', $string, $matches );
$replace = trim( $matches[0] );
print_r($matches);
?>
Gewijzigd op 11/01/2022 16:53:44 door - Ariën -
Komt dit in de buurt?
Oefenen hier :
https://regex101.com/
Code (php)
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<style>
#dit { font-weight: bold;}
#dat { font-style: italic;}
</style>
<?php
// id is uniek en staat direct na p
$string = '<p id="dit" class="zusofzo">hier staat dus de oude tekst die eigenljk aangepast/vervangen zou moeten worden door de tekst vanuit het formulier</p>';
$pattern = '#(<p id="dit".*>)(.*)(<\/p>)#s';
$replace = "$1moet dit worden$3";
$content = preg_replace( $pattern, $replace, $string );
echo '<p>pattern is <code>' . $pattern . '</code></p>' . PHP_EOL;
echo '<p>string is : ' . $string . '</p>' . PHP_EOL;
echo '<p>replace is : ' . $replace . '</p>' . PHP_EOL;
echo '<p>content is : ' . $content . '</p>' . PHP_EOL;
?>
<hr />
<?php
// id is uniek en staat direct na p
$string = '<p id="dat" class="zusofzo">hier staat weer een andere tekst die moet worden vervangen</p>';
$pattern = '#(<p id="dat".*>)(.*)(<\/p>)#s';
$replace = "$1En daar komt dit voor in de plaats.$3";
$content = preg_replace( $pattern, $replace, $string );
echo '<p>pattern is <code>' . $pattern . '</code></p>' . PHP_EOL;
echo '<p>string is : ' . $string . '</p>' . PHP_EOL;
echo '<p>replace is : ' . $replace . '</p>' . PHP_EOL;
echo '<p>content is : ' . $content . '</p>' . PHP_EOL;
?>
#dit { font-weight: bold;}
#dat { font-style: italic;}
</style>
<?php
// id is uniek en staat direct na p
$string = '<p id="dit" class="zusofzo">hier staat dus de oude tekst die eigenljk aangepast/vervangen zou moeten worden door de tekst vanuit het formulier</p>';
$pattern = '#(<p id="dit".*>)(.*)(<\/p>)#s';
$replace = "$1moet dit worden$3";
$content = preg_replace( $pattern, $replace, $string );
echo '<p>pattern is <code>' . $pattern . '</code></p>' . PHP_EOL;
echo '<p>string is : ' . $string . '</p>' . PHP_EOL;
echo '<p>replace is : ' . $replace . '</p>' . PHP_EOL;
echo '<p>content is : ' . $content . '</p>' . PHP_EOL;
?>
<hr />
<?php
// id is uniek en staat direct na p
$string = '<p id="dat" class="zusofzo">hier staat weer een andere tekst die moet worden vervangen</p>';
$pattern = '#(<p id="dat".*>)(.*)(<\/p>)#s';
$replace = "$1En daar komt dit voor in de plaats.$3";
$content = preg_replace( $pattern, $replace, $string );
echo '<p>pattern is <code>' . $pattern . '</code></p>' . PHP_EOL;
echo '<p>string is : ' . $string . '</p>' . PHP_EOL;
echo '<p>replace is : ' . $replace . '</p>' . PHP_EOL;
echo '<p>content is : ' . $content . '</p>' . PHP_EOL;
?>
Oefenen hier :
https://regex101.com/
En hier kan je ook meer lezen:
https://www.phphulp.nl/php/tutorial/php-functies/regular-expressions/520/voorwoord/1287/
En deze kan je uitprinten:
https://cheatography.com/davechild/cheat-sheets/regular-expressions/
https://www.phphulp.nl/php/tutorial/php-functies/regular-expressions/520/voorwoord/1287/
En deze kan je uitprinten:
https://cheatography.com/davechild/cheat-sheets/regular-expressions/
Gewijzigd op 11/01/2022 17:06:55 door - Ariën -
bedankt voor alle links en info. zal erna kijken.
ik heb nu onderstaande gebruikt, de tekst uit het bestand verschijnt nu zonder code
alleen verschijnt er wat lege ruimte voor de tekst. hoe kan dit?
$replace = trim( $matches[2] );
ik heb nu onderstaande gebruikt, de tekst uit het bestand verschijnt nu zonder code
alleen verschijnt er wat lege ruimte voor de tekst. hoe kan dit?
$replace = trim( $matches[2] );




