a.u.b. hulp bij 2 problemen.
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. :-)
ah ja zeker. inmiddels aangepast. bedankt voor de tip. had ik over het hoofd gezien
preg_match_all, zodat je de delen van je reguliere expressie in een array kan opvangen.
Voor puntje 2, volgens mij bedoel je de werking van 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?
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 -
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.
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 -
<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
Daarmee kan je ook eenvoudig acties uitvoeren op HTML-tags (of XML).
Gewijzigd op 11/01/2022 16:27:44 door Paul Weiss
<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
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 -
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/
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 -
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] );