a.u.b. hulp bij 2 problemen.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Paul Weiss

Paul Weiss

11/01/2022 13:50:28
Quote Anchor link
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)
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
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]
Gewijzigd op 11/01/2022 14:00:23 door Paul Weiss
 
PHP hulp

PHP hulp

28/03/2024 12:10:04
 
- Ariën  -
Beheerder

- Ariën -

11/01/2022 13:51:46
Quote Anchor link
Zet even je code tussen code-tags. :-)
 
Paul Weiss

Paul Weiss

11/01/2022 13:55:34
Quote Anchor link
hoe arien. hoe bedoel je precies? ik heb toch
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php en ?>
gebruikt?
 
- Ariën  -
Beheerder

- Ariën -

11/01/2022 13:57:44
Quote Anchor link
We hebben [code] UBB-tags voor codeblokken, en zelfs een prachtige knop daarvoor:Afbeelding

Zo blijft het forum beter leesbaar.
Gewijzigd op 11/01/2022 13:59:05 door - Ariën -
 
Paul Weiss

Paul Weiss

11/01/2022 13:59:44
Quote Anchor link
ah ja zeker. inmiddels aangepast. bedankt voor de tip. had ik over het hoofd gezien
 
- Ariën  -
Beheerder

- Ariën -

11/01/2022 14:34:07
Quote Anchor link
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.
 
Paul Weiss

Paul Weiss

11/01/2022 14:35:49
Quote Anchor link
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.
 
- Ariën  -
Beheerder

- Ariën -

11/01/2022 14:49:09
Quote Anchor link
Je kan toch met preg_replace dat doen? Of wil je het opsplitsen?
 
Paul Weiss

Paul Weiss

11/01/2022 15:11:10
Quote Anchor link
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?


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$input
= "deze test       hier        dffff";
$output = preg_replace('!\s+!', ' ', $input);
echo $output;
?>
 
- Ariën  -
Beheerder

- Ariën -

11/01/2022 15:41:17
Quote Anchor link
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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$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 -
 
Paul Weiss

Paul Weiss

11/01/2022 15:54:52
Quote Anchor link
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.
 
- Ariën  -
Beheerder

- Ariën -

11/01/2022 15:56:54
Quote Anchor link
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.
Gewijzigd op 11/01/2022 15:57:32 door - Ariën -
 
Paul Weiss

Paul Weiss

11/01/2022 15:58:14
Quote Anchor link
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 )
Gewijzigd op 11/01/2022 15:58:35 door Paul Weiss
 
- Ariën  -
Beheerder

- Ariën -

11/01/2022 16:22:34
Quote Anchor link
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).
 
Paul Weiss

Paul Weiss

11/01/2022 16:25:36
Quote Anchor link
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
 
- Ariën  -
Beheerder

- Ariën -

11/01/2022 16:33:45
Quote Anchor link
Kijk hier eens naar. Je was een escaping vergeten op je closing p

Klik
 
Paul Weiss

Paul Weiss

11/01/2022 16:45:15
Quote Anchor link
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:

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
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>
Gewijzigd op 11/01/2022 16:48:00 door Paul Weiss
 
- Ariën  -
Beheerder

- Ariën -

11/01/2022 16:52:55
Quote Anchor link
Make a choice....

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>
)


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
?>
Gewijzigd op 11/01/2022 16:53:44 door - Ariën -
 
Adoptive Solution

Adoptive Solution

11/01/2022 16:59:39
Quote Anchor link
Komt dit in de buurt?

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
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;
?>


Oefenen hier :

https://regex101.com/
 
- Ariën  -
Beheerder

- Ariën -

11/01/2022 17:06:18
 
Paul Weiss

Paul Weiss

11/01/2022 17:21:41
Quote Anchor link
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] );
 

Pagina: 1 2 volgende »



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.