Zum Inhalt springen

"String enthält x"

Erstellt am 14. Juni 2010 · 8 Antworten · letzte Antwort am 22. Juli 2010

Tags: Frage

ChrL ·

Hallo zusammen,

kann ich via Typoscript untersuchen, ob ein String ein bestimmtes Zeichen enthält und dementsprechend einen Wert zurückgeben?

Beispiel:
- Falls Zeichen "xyz" im String vorhanden, gebe "ABC" aus.
- Falls Zeichen "xyz" nicht im String vorhanden, gebe "123" aus.

Ist das via "if" möglich?

Danke vorab!

einpraegsam.​net ·
ChrL schrieb

Schade, ich hatte gehofft es ginge nur mit Typoscript...

Leider nein, aber man kann wirklich einfach über TypoScript eine userFunc reinhängen oder mit 2 Zeilen PHP nachhelfen

ChrL ·

Moin!
Danke für die Zusammenstellung.
Ich doppelposte mal, damit Mitlesende hier auch was davon haben:

Hier meine Lösung:

TS:
——————————————-

includeLibs.user_misc = fileadmin/ext/wfqbe/user_misc.php
plugin.tx_wfqbe_pi1.customProcess.34 {
0 = USER
0.userFunc = user_misc->stristrTypoScript
0.userFunc {
# whole string
searchText = TEXT
searchText.data = GPVar:tx_wfqbe_pi1|ID

# keyword to search for
searchFor = X

# TypoScript if keyword found
foundText = TEXT
foundText.value = ###WFQBE_FIELD_0###
foundText.typolink = 1
foundText.typolink.parameter = 85
foundText.typolink.additionalParams = &tx_wfqbe_pi1[TAB]=x
foundText.typolink.additionalParams.stdWrap.dataWrap = |&tx_wfqbe_pi1[COL]=###WFQBE_FIELD_0###&tx_wfqbe_pi1[IDX]={GPVar:tx_wfqbe_pi1|ID}
foundText.typolink.htmlSpecialChars = 1

# TypoScript if keyword not found
notFoundText = TEXT
notFoundText.value = ###WFQBE_FIELD_0###
notFoundText.typolink = 1
notFoundText.typolink.parameter = 85
notFoundText.typolink.additionalParams = &tx_wfqbe_pi1[TAB]=y
notFoundText.typolink.additionalParams.stdWrap.dataWrap = |&tx_wfqbe_pi1[COL]=###WFQBE_FIELD_0###&tx_wfqbe_pi1[IDX]={GPVar:tx_wfqbe_pi1|ID}
notFoundText.typolink.htmlSpecialChars = 1
}
}

——————————————-

PHP:
——————————————-

cObj; // cObject
$conf = $conf['userFunc.']; // ts config
$searchFor = $conf['searchFor']; // get string
$searchText = $local_cObj->cObjGetSingle($conf['searchText'], $conf['searchText.']); // stdWrap for search Text
$foundText = $local_cObj->cObjGetSingle($conf['foundText'], $conf['foundText.']); // stdWrap for found Text
$notFoundText = $local_cObj->cObjGetSingle($conf['notFoundText'], $conf['notFoundText.']); // stdWrap for not found Text
if ( $bDebug )
{
print_r ( “searchText: ” . $searchText . “\n” );
print_r ( “searchFor: ” . $searchFor . “\n” );
}
// let’s go
if (stristr($searchText, $searchFor))
{ // if keyword found
if ( $bDebug )
{
echo (‘keyword found, return: ‘);
print_r ( $foundText );
die ();
}
return $foundText; // return found text
}
else
{ // keyword not found
if ( $bDebug )
{
echo (‘keyword not found, return: ‘);
print_r ( $notFoundText );
die ();
}
return $notFoundText; // return not found
}
}
}
?>
ChrL ·

ich hab vergessen, das als gelöst zu markieren - seltsamerweise kann ich das jetzt nicht selbst tun.
wie geht's?