wpseek.com
A WordPress-centric search engine for devs and theme authors
wp_html_custom_data_attribute_name › WordPress Function
Since6.9.0
Deprecatedn/a
› wp_html_custom_data_attribute_name ( $js_dataset_name )
| Parameters: |
|
| See: | |
| Returns: |
|
| Defined at: |
|
| Codex: |
Returns a corresponding HTML attribute name for the given name, if that name were found in a JS element’s `dataset` property.
Example: 'data-post-id' === wp_html_custom_data_attribute_name( 'postId' ); 'data--before' === wp_html_custom_data_attribute_name( 'Before' ); 'data---one---two---' === wp_html_custom_data_attribute_name( '-One--Two---' ); // Not every attribute name will be interpreted as a custom data attribute. null === wp_html_custom_data_attribute_name( '/not-an-attribute/' ); null === wp_html_custom_data_attribute_name( 'no spaces' ); // Some very surprising names will; for example, a property whose name is the empty string. 'data-' === wp_html_custom_data_attribute_name( '' );Source
function wp_html_custom_data_attribute_name( string $js_dataset_name ): ?string {
$end = strlen( $js_dataset_name );
if ( 0 === $end ) {
return 'data-';
}
/*
* If it contains characters which would end the attribute name parsing then
* something it’s not possible to represent this in HTML.
*/
if ( strcspn( $js_dataset_name, "=/> \t\f\r\n" ) !== $end ) {
return null;
}
$html_name = 'data-';
$at = 0;
$was_at = $at;
while ( $at < $end ) {
$next_upper_after = strcspn( $js_dataset_name, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', $at );
$next_upper_at = $at + $next_upper_after;
if ( $next_upper_at >= $end ) {
break;
}
$prefix = substr( $js_dataset_name, $was_at, $next_upper_at - $was_at );
$html_name .= strtolower( $prefix );
$html_name .= '-' . strtolower( $js_dataset_name[ $next_upper_at ] );
$at = $next_upper_at + 1;
$was_at = $at;
}
if ( $was_at < $end ) {
$html_name .= strtolower( substr( $js_dataset_name, $was_at ) );
}
return $html_name;
}