Zoeken naar text en de rest erachter verwijderen

Status
Niet open voor verdere reacties.

infernothebest

Gebruiker
Lid geworden
25 feb 2008
Berichten
76
Is er een script dat naar 2 bepaalde woorden te zoekt in een tekst "(...)", "[...]" dat vervolgens de tekst erachter verwijderd

voorbeeld:

De app werkt hartstikke eenvoudig en het beste [...] bal blsdsadsaddfdsfds ffds

moet dit worden:

De app werkt hartstikke eenvoudig en het beste
 
Als dit het hele scenario is kan dat prima met een preg_replace lijkt me.
 
Ok, maar hier kom ik niet verder mee:confused:. Hiermee kun je dingen mee wegfilteren maar dus niet zeggen van: vanaf dit teken alles erachter verwijderen.
 
kijk eens naar de strpos functie van php
daarmee kun je kijken op welke positie in een string een character of characterset voor komt en met die positie kun je dan met substr de characters tot die positie laten zien
 
Bedankt voor het reageren allemaal:), ik heb mijn antwoord half gevonden :D. Ik heb nu alleen nog nog twee problemen, ik kan alleen een tekst zoeken ipv 2 dus "(...)" en [...], en als het zoekwoord niet gevonden is geeft hij geen tekst weer.
dit is de code die ik uiteindelijk gemaakt heb:

PHP:
<?php

echo str_before('Deze text blijft(...) en deze gaat weg', "(...)");

function str_before($subject, $needle)
{
    $p = strpos($subject, $needle);
    return substr($subject, 0, $p);
}



?>
 
Laatst bewerkt:
Ik had gisteravond even geen tijd, maar hier een voorbeeld met preg_replace

PHP:
$string  = 'testy test test (...) fsfsdfdsd';
echo preg_replace('/\(...\).+/','',$string);

edit:

voor beide situaties:

PHP:
preg_replace('/(\(...\).+|\[...\].+)/','',$string)
 
Laatst bewerkt:
Het is gedeeltelijk gelukt :D , de tekst erachter gaat weg maar niet de html tags tekst :S
 
Laatst bewerkt:
Ik heb de oplossing deels gevonden, alleen worden hier niet het plaatje in meegenomen, iemand een idee hoe ik dit kan wijzigen dat dit alsnog werkt.


content geeft alle html tekst en plaatjes door.
PHP:
$content

PHP:
	$mystring = $content;
$findme   = '(...)';
$pos = strpos($mystring, $findme);
if ($pos === false) {
$xp = strpos($mystring, "[...]");
    $uitkomst = substr($mystring, 0, $xp);
	
		if (empty($uitkomst )) {
		
	$uitkomst = $mystring;
	
} else {
	$uitkomst;
}

} else {
	
$pp = strpos($mystring, "(...)");
    $uitkomst = substr($mystring, 0, $pp);
	
	
	if (empty($uitkomst )) {
		
	$uitkomst = $mystring;
	
	
} else {
	$uitkomst;
}


}
	
	
// html convert gedeelte	
	
	
$document = $uitkomst;



$search = array ("'<script[^>]*?>.*?</script>'si",  
                 "'<[/!]*?[^<>]*?>'si",          
                 "'([rn])[s]+'",                
                 "'&(quot|#34);'i",               
                 "'&(amp|#38);'i",
                 "'&(lt|#60);'i",
                 "'&(gt|#62);'i",
                 "'&(nbsp|#160);'i",
                 "'&(iexcl|#161);'i",
                 "'&(cent|#162);'i",
                 "'&(pound|#163);'i",
                 "'&(copy|#169);'i",
                 "'&#(d+);'e");                    

$replace = array ("",
                 "",
                 "\1",
                 "\"",
                 "&",
                 "<",
                 ">",
                 " ",
                 chr(161),
                 chr(162),
                 chr(163),
                 chr(169),
                 "chr(\1)");

$texttt = preg_replace($search, $replace, $document);
 
Allereerst wil ik iedereen al bedanken voor de gedane moeite:)!!

Ik heb wel iets gevonden voor het krijgen van de img tags van een plaatje, het staat nu in de comments helemaal boven aan maar krijg het niet gekoppeld aan:
HTML:
$overgeblevenwoorden
(wat helemaal onderaan staat bij de array).


Ik wou het plaatje en de tekst apart doen, dus in principe twee keer, de 1e keer komt de er alleen tekst uit en de 2e keer alleen een plaatjes. en die wil ik dan onder bij de array weer samenvoegen maar dat lukt dus niet, iemand een idee?



PHP:
//preg_match_all('/<img[^>]+>/i',$content, $plaatjes); 

	
	
	
	
	
	$mystring = $content;
	
$findme   = '(...)';
$pos = strpos($mystring, $findme);
if ($pos === false) {
$xp = strpos($mystring, "[...]");
    $uitkomst = substr($mystring, 0, $xp);
	
		if (empty($uitkomst )) {
		
	$uitkomst = $mystring;
	
} else {
	$uitkomst;
}

} else {
	
$pp = strpos($mystring, "(...)");
    $uitkomst = substr($mystring, 0, $pp);
	
	
	if (empty($uitkomst )) {
		
	$uitkomst = $mystring;
	
	
} else {
	$uitkomst;
}


}
	
	
	
	
	
$document = $uitkomst;


$search = array ("'<script[^>]*?>.*?</script>'si", 
                 "'<[/!]*?[^<>]*?>'si",          
                 "'&(quot|#34);'i",                
                 "'&(amp|#38);'i",
                 "'&(lt|#60);'i",
                 "'&(gt|#62);'i",
                 "'&(nbsp|#160);'i",
                 "'&(iexcl|#161);'i",
                 "'&(cent|#162);'i",
                 "'&(pound|#163);'i",
                 "'&(copy|#169);'i"); 
                                   

$replace = array ("",
                 "",
          
                 "\"",
                 "&",
                 "<",
                 ">",
                 " ",
                 chr(161),
                 chr(162),
                 chr(163),
                 chr(169));
                
				 

$texttt = preg_replace($search, $replace, $document);


	$string = $texttt;
$overgeblevenwoorden =implode(" ", array_slice(preg_split("/\s+/", $string), 0, 53));
	
   

  
    $postid = wp_insert_post(array(
    	'post_title' 	            => $title,
  		'post_content'  	        => $overgeblevenwoorden,
  		'post_content_filtered'  	=> $overgeblevenwoorden,
  		'post_category'           => $category,
  		'post_status' 	          => $status,
  		'post_author'             => $authorid,
  		'post_date'               => $date,
  		'comment_status'          => $comment_status,
  		'ping_status'             => ($allowpings) ? "open" : "closed"
    ));
 
Ik had gisteravond even geen tijd, maar hier een voorbeeld met preg_replace

PHP:
$string  = 'testy test test (...) fsfsdfdsd';
echo preg_replace('/\(...\).+/','',$string);

edit:

voor beide situaties:

PHP:
preg_replace('/(\(...\).+|\[...\].+)/','',$string)

Ik denk dat je de puntjes bínnen de haakjes ook moet escapen, anders matched 'ie elk karakter. Dus ik vermoed nu dat "(abc)" ook vervangen wordt :)
 
sorry voor de late reactie, ik had geen bericht gekregen dat er gereageerd was... Ik ben direct aan de slag gegaan en ben benieuwd of het gaat werken ik laat morgen wat weten ;) bedankt voor het reageren
 
Heeeeel erg bedankt, het werkt, Ik heb de code uiteindelijk een stuk korter gemaakt.

PHP:
$text = $mystring = $content;
$stripedhtml = strip_tags($text, '<img>');
$text1 = $stripedhtml;
$uitkomst = preg_replace('/(\(...\).+|\[...\].+)/','',$text1);
$string = $uitkomst;
$overgeblevenwoorden =implode(" ", array_slice(preg_split("/\s+/",$string), 0, 53));

$resultt= rtrim($overgeblevenwoorden, ', ');
 
Let wel over op AJT's commentaar, Hij heeft gelijk, daar ik de delen niet tossen blokken heb gezet moet "." ook ge-escaped worden om alleen op punten te reageren.

('/(\(\.\.\.\).+|\[\.\.\.\].+)/','',$text1);

Dat krijg je als je snel even tussendoor probeert uit te leggen hoe het ook met preg_replace kon :)
 
Wat zou ik toch zonder jullie moeten doen;), weet iemand trouwens hoe je de margin kunt verwijderen uit een img tag met dit voorbeeld:

PHP:
$text = $mystring = $content;
$stripedhtml = strip_tags($text, '<img>');
$text1 = $stripedhtml;
$uitkomst = preg_replace('/(\(\.\.\.\).+|\[\.\.\.\].+)/','',$text1);
$string = $uitkomst;
$overgeblevenwoorden =implode(" ", array_slice(preg_split("/\s+/",$string), 0, 53));


//alle leestekens verwijderen op het einde en vervangen door ...

$result= rtrim($overgeblevenwoorden, ', '); 
$result2= rtrim($result, ','); 
$result3= rtrim($result2, '. '); 
$result4= rtrim($result3, '.'); 
$result5= rtrim($result4, '(...)'); 
$result6= rtrim($result5, '(...) '); 
$result7= rtrim($result6, '[...]'); 
$result8= rtrim($result7, '[...] ');
$result9= rtrim($result8, '? '); 
$result10= rtrim($result9, '?'); 
$result11= rtrim($result10, '! '); 
$result12= rtrim($result11, '!'); 
$eindresultaat= $result12."...";
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan