Een if met (.*?) (Opgelost)
tomie94 - 14/01/2008 15:29
PHP interesse
ik ben wat aan het proberen met een if ik heb nu dit:
<?php
if($msg == '!regels!(.*?)!') {
$goodmsg = preg_replace("/!regels!(.*?)!/", "\\1, Lees de regels op ...", $msg);
}
else{
$goodmsg = $msg;
}
$out = $chattext . $n . " | " . $goodmsg . "<br>\n";
$out = str_replace("\'", "'", $out);
$out = str_replace("\\\"", "\"", $out);
$handle = fopen ($fn, 'w'); fwrite ($handle, $out); fclose($handle);
?>
<?php
if ( $msg == '!regels!(.*?)!' ) {
$goodmsg = preg_replace ( "/!regels!(.*?)!/" , "\\1 , Lees de regels op ..." , $msg ) ; }
else {
$goodmsg = $msg ;
}
$out = $chattext . $n . " | " . $goodmsg . "<br>\n " ;
?>
maar natuurlijk werkt dit niet... is er een mogenlijkheid om dus tussen regels wat in te voeren wat je wilt?
12 antwoorden
Gesponsorde links
tomie94 - 14/01/2008 15:38
PHP interesse
ik heb nu dit
<?php
if(ereg("!regels![a-zA-Z0-9]!", $msg, $regels) {
$goodmsg = $regels[1].", lees de regels op...";
}
else{
$goodmsg = $msg;
}
$out = $chattext . $n . " | " . $goodmsg . "<br>\n";
$out = str_replace("\'", "'", $out);
$out = str_replace("\\\"", "\"", $out);
$handle = fopen ($fn, 'w'); fwrite ($handle, $out); fclose($handle);
?>
<?php
if ( ereg ( "!regels![a-zA-Z0-9]!" , $msg , $regels ) { $goodmsg = $regels [ 1 ] . ", lees de regels op..." ;
}
else {
$goodmsg = $msg ;
}
$out = $chattext . $n . " | " . $goodmsg . "<br>\n " ;
?>
maar helaas werkt dit niet...
marten - 14/01/2008 16:04
Beheerder
werkt niet zeg je al 2x
iets meer info is wel welkom wat werkt er niet, krijg je foutmelding? Wat wil je precies
tomie94 - 14/01/2008 16:07 (laatste wijziging 14/01/2008 16:13)
PHP interesse
ik krijg geen error. ik heb ook om de [a-zA-Z0-9] 2 haakjes gezet. maar dat helpt ook niet...
EDIT:
ik heb dus een chatbox gemaakt met AJAX en nu wil ik net als 'Snel Vragen' op sitemasters allemaal dingen die je in kan typen zoals !regels gebruikersnaam.
tomie94 - 14/01/2008 17:34
PHP interesse
ik heb nu dit:
<?php
ereg("!regels!(^[a-z0-9]*$)!", $msg, $regels) {
?>
<?php
ereg ( "!regels!(^[a-z0-9]*$)!" , $msg , $regels ) { ?>
maar als ik !regels!sitemasters! intik krijg ik hetzelfde terug(!regels!sitemasters!)
tomie94 - 14/01/2008 18:42 (laatste wijziging 14/01/2008 19:49)
PHP interesse
oke ik gebruik het nu met eregi:
<?php
if(eregi("!regels!(^[a-z0-9]*$)!", $msg, $regels)) {
$botnaam = 'Bot';
$out = $chattext . $botnaam . " | Lees de regels op: ...<br>\n";
$out = str_replace("\'", "'", $out);
$out = str_replace("\\\"", "\"", $out);
$handle = fopen ($fn, 'w'); fwrite ($handle, $out); fclose($handle);
}
else{
$out = $chattext . $n . " | " . $goodmsg . "<br>\n";
$out = str_replace("\'", "'", $out);
$out = str_replace("\\\"", "\"", $out);
$handle = fopen ($fn, 'w'); fwrite ($handle, $out); fclose($handle);
}
?>
<?php
if ( eregi ( "!regels!(^[a-z0-9]*$)!" , $msg , $regels ) ) { $botnaam = 'Bot' ;
$out = $chattext . $botnaam . " | Lees de regels op: ...<br>\n " ;
}
else {
$out = $chattext . $n . " | " . $goodmsg . "<br>\n " ;
}
?>
maar als ik nu tekst toevoeg krijg ik alleen de variabele $n te zien(die in de else) en niks in de if...
Edit:
Nu werkt de code weer, maar als ik !regels!naam! intik krijg ik alsnog gewoon !regels!naam! te zien
<?php
if(preg_match("/!regels!(.*?)!/", $msg, $naam)) {
$botnaam = 'Bot';
$out = $chattext . $botnaam . " | ".$naam[1]."Lees de regels op: ...<br>\n";
$out = str_replace("\'", "'", $out);
$out = str_replace("\\\"", "\"", $out);
$handle = fopen ($fn, 'w'); fwrite ($handle, $out); fclose($handle);
}
else{
$out = $chattext . $n . " | " . $msg . "<br>\n";
$out = str_replace("\'", "'", $out);
$out = str_replace("\\\"", "\"", $out);
$handle = fopen ($fn, 'w'); fwrite ($handle, $out); fclose($handle);
}
?>
<?php
$botnaam = 'Bot' ;
$out = $chattext . $botnaam . " | " . $naam [ 1 ] . "Lees de regels op: ...<br>\n " ;
}
else {
$out = $chattext . $n . " | " . $msg . "<br>\n " ;
}
?>
ikkedikke - 14/01/2008 22:03
PHP expert
probeer die uitroeptekens eens te escapen
BramBo - 14/01/2008 22:08 (laatste wijziging 14/01/2008 22:11)
JS gevorderde
Je hebt maar 1 Match group maar gebruikt de 2de match group. De laatste match group bevat het gehele subject.
Dus wanneer je een matching group hebt is group 1 de match ( (.*?) ) en group 2 de gehele input string.
Gebruik $naam[0]
tomie94 - 15/01/2008 16:00
PHP interesse
het is opgelost
Gesponsorde links
Dit onderwerp is gesloten .